package com.mallplus.common.database.util;

import com.mallplus.common.database.dto.PageDTO;

/**
 * 分页适配
 *
 * @author Hanson
 * @date 2023/4/16 21:50
 */
public class PageAdapter {

    private int begin;

    private int size;

    public PageAdapter(PageDTO page) {
        // 根据分页查询的约定，如果查询第 pageNum 页的数据，其实际的起始位置应该为 (pageNum - 1) * pageSize。
        // 这是因为，如果每页显示的数据条数为 pageSize，那么第一页的起始位置为 0，第二页的起始位置为 pageSize，第三页的起始位置为 2 * pageSize，以此类推。
        // 因此，如果要查询第 pageNum 页的数据，应该将起始位置设为 (pageNum - 1) * pageSize。
        this.begin = getStart(page.getPageNum() - 1, page.getPageSize());
        this.size = page.getPageSize();
    }

    public int getBegin() {
        return begin;
    }

    public void setBegin(int begin) {
        this.begin = begin;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public static int getStart(int pageNo, int pageSize) {
        if (pageNo < 0) {
            pageNo = 0;
        }

        if (pageSize < 0) {
            pageSize = 0;
        }

        return pageNo * pageSize;
    }
}
